//# SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.

//# SPDX-License-Identifier: GPL-3.0-or-later
use crate::src_common::*;

use super::alias::{alias_builtin, unalias_builtin};
use super::bind::bind_builtin;
use super::break_1::{break_builtin, continue_builtin};
use super::builtin::builtin_builtin;
use super::caller::caller_builtin;
use super::cd::{cd_builtin, pwd_builtin};
use super::colon::{colon_builtin, false_builtin};
use super::command::command_builtin;
use super::complete::{compgen_builtin, complete_builtin, compopt_builtin};
use super::declare::{declare_builtin, local_builtin};
use super::echo::echo_builtin;
use super::enable::enable_builtin;
use super::eval::eval_builtin;
use super::exec::exec_builtin;
use super::exit::{exit_builtin, logout_builtin};
use super::fc::fc_builtin;
use super::fg_bg::{bg_builtin, fg_builtin};
use super::getopts::getopts_builtin;
use super::hash::hash_builtin;
use super::help::help_builtin;
use super::history::history_builtin;
use super::jobs::disown_builtin;
use super::jobs::jobs_builtin;
use super::kill::kill_builtin;
use super::let_1::let_builtin;
use super::mapfile::mapfile_builtin;
use super::printf::printf_builtin;
use super::pushd::{dirs_builtin, popd_builtin, pushd_builtin};
use super::read::read_builtin;
use super::return_1::return_builtin;
use super::set::{set_builtin, unset_builtin};
use super::setattr::{export_builtin, readonly_builtin};
use super::shift::shift_builtin;
use super::shopt::shopt_builtin;
use super::source::source_builtin;
use super::suspend::suspend_builtin;
use super::test::test_builtin;
use super::times::times_builtin;
use super::trap::trap_builtin;
use super::type_1::type_builtin;
use super::ulimit::ulimit_builtin;
use super::umask::umask_builtin;
use super::wait::wait_builtin;

#[no_mangle]
pub static mut static_shell_builtins: [builtin; 77] = unsafe {
    [
        {
            let init = builtin {
                name: b"alias\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(alias_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int
                    | 0x4 as libc::c_int
                    | 0x10 as libc::c_int
                    | 0x20 as libc::c_int,
                long_doc: alias_doc.as_ptr(),
                short_doc: b"alias [-p] [name[=value] ... ]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"unalias\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(unalias_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int | 0x20 as libc::c_int,
                long_doc: unalias_doc.as_ptr(),
                short_doc: b"unalias [-a] name [name ...]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"bind\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(
                    bind_builtin as  fn(*mut WORD_LIST) -> libc::c_int,
                ),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: bind_doc.as_ptr(),
                short_doc: b"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]\0"
                    as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void
                    as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"break\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(break_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int | 0x8 as libc::c_int,
                long_doc: break_doc.as_ptr(),
                short_doc: b"break [n]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"continue\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(continue_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int | 0x8 as libc::c_int,
                long_doc: continue_doc.as_ptr(),
                short_doc: b"continue [n]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"builtin\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(builtin_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: builtin_doc.as_ptr(),
                short_doc: b"builtin [shell-builtin [arg ...]]\0" as *const u8
                    as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"caller\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(caller_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: caller_doc.as_ptr(),
                short_doc: b"caller [expr]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"cd\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(cd_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int | 0x20 as libc::c_int,
                long_doc: cd_doc.as_ptr(),
                short_doc: b"cd [-L|[-P [-e]] [-@]] [dir]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"pwd\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(pwd_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int | 0x20 as libc::c_int,
                long_doc: pwd_doc.as_ptr(),
                short_doc: b"pwd [-LP]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b":\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(colon_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int | 0x8 as libc::c_int,
                long_doc: colon_doc.as_ptr(),
                short_doc: b":\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"true\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(colon_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int | 0x20 as libc::c_int,
                long_doc: true_doc.as_ptr(),
                short_doc: b"true\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"false\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(false_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int | 0x20 as libc::c_int,
                long_doc: false_doc.as_ptr(),
                short_doc: b"false\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"command\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(command_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int
                    | 0x4 as libc::c_int
                    | 0x20 as libc::c_int
                    | 0x80 as libc::c_int,
                long_doc: command_doc.as_ptr(),
                short_doc: b"command [-pVv] command [arg ...]\0" as *const u8
                    as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"declare\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(declare_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int
                    | 0x4 as libc::c_int
                    | 0x10 as libc::c_int
                    | 0x40 as libc::c_int,
                long_doc: declare_doc.as_ptr(),
                short_doc: b"declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]\0" as *const u8
                    as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"typeset\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(declare_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int
                    | 0x4 as libc::c_int
                    | 0x10 as libc::c_int
                    | 0x40 as libc::c_int,
                long_doc: typeset_doc.as_ptr(),
                short_doc: b"typeset [-aAfFgiIlnrtux] [-p] name[=value] ...\0" as *const u8
                    as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"local\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(local_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int
                    | 0x4 as libc::c_int
                    | 0x10 as libc::c_int
                    | 0x40 as libc::c_int,
                long_doc: local_doc.as_ptr(),
                short_doc: b"local [option] name[=value] ...\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"echo\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(echo_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: echo_doc.as_ptr(),
                short_doc: b"echo [-neE] [arg ...]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"enable\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(enable_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: enable_doc.as_ptr(),
                short_doc: b"enable [-a] [-dnps] [-f filename] [name ...]\0" as *const u8
                    as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"eval\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(eval_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int | 0x8 as libc::c_int,
                long_doc: eval_doc.as_ptr(),
                short_doc: b"eval [arg ...]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"getopts\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(getopts_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int | 0x20 as libc::c_int,
                long_doc: getopts_doc.as_ptr(),
                short_doc: b"getopts optstring name [arg ...]\0" as *const u8
                    as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"exec\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(exec_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int
                    | 0x4 as libc::c_int
                    | 0x8 as libc::c_int
                    | 0x80 as libc::c_int,
                long_doc: exec_doc.as_ptr(),
                short_doc: b"exec [-cl] [-a name] [command [argument ...]] [redirection ...]\0"
                    as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"exit\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(exit_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int | 0x8 as libc::c_int,
                long_doc: exit_doc.as_ptr(),
                short_doc: b"exit [n]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"logout\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(logout_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: logout_doc.as_ptr(),
                short_doc: b"logout [n]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"fc\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(fc_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int | 0x20 as libc::c_int,
                long_doc: fc_doc.as_ptr(),
                short_doc: b"fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]\0"
                    as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"fg\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(fg_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int | 0x20 as libc::c_int,
                long_doc: fg_doc.as_ptr(),
                short_doc: b"fg [job_spec]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"bg\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(bg_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int | 0x20 as libc::c_int,
                long_doc: bg_doc.as_ptr(),
                short_doc: b"bg [job_spec ...]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"hash\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(hash_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: hash_doc.as_ptr(),
                short_doc: b"hash [-lr] [-p pathname] [-dt] [name ...]\0" as *const u8
                    as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"help\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(help_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: help_doc.as_ptr(),
                short_doc: b"help [-dms] [pattern ...]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"history\0" as *const u8 as *const libc::c_char
                    as *mut libc::c_char,
                function: Some(
                    history_builtin
                        as  fn(*mut WORD_LIST) -> libc::c_int,
                ),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: history_doc.as_ptr(),
                short_doc: b"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]\0"
                    as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void
                    as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"jobs\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(jobs_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int | 0x20 as libc::c_int,
                long_doc: jobs_doc.as_ptr(),
                short_doc: b"jobs [-lnprs] [jobspec ...] or jobs -x command [args]\0" as *const u8
                    as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"disown\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(disown_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: disown_doc.as_ptr(),
                short_doc: b"disown [-h] [-ar] [jobspec ... | pid ...]\0" as *const u8
                    as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"kill\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(
                    kill_builtin as  fn(*mut WORD_LIST) -> libc::c_int,
                ),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int | 0x20 as libc::c_int,
                long_doc: kill_doc.as_ptr(),
                short_doc: b"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]\0"
                    as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void
                    as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"let\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(let_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: let_doc.as_ptr(),
                short_doc: b"let arg [arg ...]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"read\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(
                    read_builtin as  fn(*mut WORD_LIST) -> libc::c_int,
                ),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int | 0x20 as libc::c_int,
                long_doc: read_doc.as_ptr(),
                short_doc: b"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]\0"
                    as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void
                    as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"return\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(return_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int | 0x8 as libc::c_int,
                long_doc: return_doc.as_ptr(),
                short_doc: b"return [n]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"set\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(set_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int | 0x8 as libc::c_int,
                long_doc: set_doc.as_ptr(),
                short_doc: b"set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]\0"
                    as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"unset\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(unset_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int | 0x8 as libc::c_int,
                long_doc: unset_doc.as_ptr(),
                short_doc: b"unset [-f] [-v] [-n] [name ...]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"export\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(export_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int
                    | 0x4 as libc::c_int
                    | 0x8 as libc::c_int
                    | 0x10 as libc::c_int,
                long_doc: export_doc.as_ptr(),
                short_doc: b"export [-fn] [name[=value] ...] or export -p\0" as *const u8
                    as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"readonly\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(readonly_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int
                    | 0x4 as libc::c_int
                    | 0x8 as libc::c_int
                    | 0x10 as libc::c_int,
                long_doc: readonly_doc.as_ptr(),
                short_doc: b"readonly [-aAf] [name[=value] ...] or readonly -p\0" as *const u8
                    as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"shift\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(shift_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int | 0x8 as libc::c_int,
                long_doc: shift_doc.as_ptr(),
                short_doc: b"shift [n]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"source\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(source_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int
                    | 0x4 as libc::c_int
                    | 0x8 as libc::c_int
                    | 0x80 as libc::c_int,
                long_doc: source_doc.as_ptr(),
                short_doc: b"source filename [arguments]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b".\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(source_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int
                    | 0x4 as libc::c_int
                    | 0x8 as libc::c_int
                    | 0x80 as libc::c_int,
                long_doc: dot_doc.as_ptr(),
                short_doc: b". filename [arguments]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"suspend\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(suspend_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: suspend_doc.as_ptr(),
                short_doc: b"suspend [-f]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"test\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(test_builtin),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: test_doc.as_ptr(),
                short_doc: b"test [expr]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"[\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(test_builtin),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: test_bracket_doc.as_ptr(),
                short_doc: b"[ arg... ]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"times\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(times_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int | 0x8 as libc::c_int,
                long_doc: times_doc.as_ptr(),
                short_doc: b"times\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"trap\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(trap_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int | 0x8 as libc::c_int,
                long_doc: trap_doc.as_ptr(),
                short_doc: b"trap [-lp] [[arg] signal_spec ...]\0" as *const u8
                    as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"type\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(type_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: type_doc.as_ptr(),
                short_doc: b"type [-afptP] name [name ...]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"ulimit\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(ulimit_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: ulimit_doc.as_ptr(),
                short_doc: b"ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]\0" as *const u8
                    as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"umask\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(umask_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int | 0x20 as libc::c_int,
                long_doc: umask_doc.as_ptr(),
                short_doc: b"umask [-p] [-S] [mode]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"wait\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(wait_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int | 0x20 as libc::c_int,
                long_doc: wait_doc.as_ptr(),
                short_doc: b"wait [-fn] [-p var] [id ...]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"for\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: None,
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: for_doc.as_ptr(),
                short_doc: b"for NAME [in WORDS ... ] ; do COMMANDS; done\0" as *const u8
                    as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"for ((\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: None,
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: arith_for_doc.as_ptr(),
                short_doc: b"for (( exp1; exp2; exp3 )); do COMMANDS; done\0" as *const u8
                    as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"select\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: None,
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: select_doc.as_ptr(),
                short_doc: b"select NAME [in WORDS ... ;] do COMMANDS; done\0" as *const u8
                    as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"time\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: None,
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: time_doc.as_ptr(),
                short_doc: b"time [-p] pipeline\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"case\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: None,
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: case_doc.as_ptr(),
                short_doc: b"case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac\0"
                    as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"if\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: None,
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: if_doc.as_ptr(),
                short_doc: b"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi\0"
                    as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void
                    as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"while\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: None,
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: while_doc.as_ptr(),
                short_doc: b"while COMMANDS; do COMMANDS; done\0" as *const u8
                    as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"until\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: None,
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: until_doc.as_ptr(),
                short_doc: b"until COMMANDS; do COMMANDS; done\0" as *const u8
                    as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"coproc\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: None,
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: coproc_doc.as_ptr(),
                short_doc: b"coproc [NAME] command [redirections]\0" as *const u8
                    as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"function\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: None,
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: function_doc.as_ptr(),
                short_doc: b"function name { COMMANDS ; } or name () { COMMANDS ; }\0" as *const u8
                    as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"{ ... }\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: None,
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: grouping_braces_doc.as_ptr(),
                short_doc: b"{ COMMANDS ; }\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"%\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: None,
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: fg_percent_doc.as_ptr(),
                short_doc: b"job_spec [&]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"(( ... ))\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: None,
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: arith_doc.as_ptr(),
                short_doc: b"(( expression ))\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"[[ ... ]]\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: None,
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: conditional_doc.as_ptr(),
                short_doc: b"[[ expression ]]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"variables\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: None,
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: variable_help_doc.as_ptr(),
                short_doc: b"variables - Names and meanings of some shell variables\0" as *const u8
                    as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"pushd\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(pushd_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: pushd_doc.as_ptr(),
                short_doc: b"pushd [-n] [+N | -N | dir]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"popd\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(popd_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: popd_doc.as_ptr(),
                short_doc: b"popd [-n] [+N | -N]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"dirs\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(dirs_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: dirs_doc.as_ptr(),
                short_doc: b"dirs [-clpv] [+N] [-N]\0" as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"shopt\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(shopt_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: shopt_doc.as_ptr(),
                short_doc: b"shopt [-pqsu] [-o] [optname ...]\0" as *const u8
                    as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"printf\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(printf_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: printf_doc.as_ptr(),
                short_doc: b"printf [-v var] format [arguments]\0" as *const u8
                    as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"complete\0" as *const u8 as *const libc::c_char
                    as *mut libc::c_char,
                function: Some(
                    complete_builtin
                        as  fn(*mut WORD_LIST) -> libc::c_int,
                ),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: complete_doc.as_ptr(),
                short_doc: b"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]\0"
                    as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void
                    as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"compgen\0" as *const u8 as *const libc::c_char
                    as *mut libc::c_char,
                function: Some(
                    compgen_builtin
                        as  fn(*mut WORD_LIST) -> libc::c_int,
                ),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: compgen_doc.as_ptr(),
                short_doc: b"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]\0"
                    as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void
                    as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"compopt\0" as *const u8 as *const libc::c_char as *mut libc::c_char,
                function: Some(compopt_builtin as fn(*mut WORD_LIST) -> libc::c_int),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: compopt_doc.as_ptr(),
                short_doc: b"compopt [-o|+o option] [-DEI] [name ...]\0" as *const u8
                    as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"mapfile\0" as *const u8 as *const libc::c_char
                    as *mut libc::c_char,
                function: Some(
                    mapfile_builtin
                        as  fn(*mut WORD_LIST) -> libc::c_int,
                ),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: mapfile_doc.as_ptr(),
                short_doc: b"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]\0"
                    as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void
                    as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: b"readarray\0" as *const u8 as *const libc::c_char
                    as *mut libc::c_char,
                function: Some(
                    mapfile_builtin
                        as  fn(*mut WORD_LIST) -> libc::c_int,
                ),
                flags: 0x1 as libc::c_int | 0x4 as libc::c_int,
                long_doc: readarray_doc.as_ptr(),
                short_doc: b"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]\0"
                    as *const u8 as *const libc::c_char,
                handle: 0 as *const libc::c_void as *mut libc::c_void
                    as *mut libc::c_char,
            };
            init
        },
        {
            let init = builtin {
                name: 0 as *const libc::c_char as *mut libc::c_char,
                function: None,
                flags: 0 as libc::c_int,
                long_doc: 0 as *const *mut libc::c_char as *mut *mut libc::c_char,
                short_doc: 0 as *const libc::c_char as *mut libc::c_char,
                handle: 0 as *const libc::c_char as *mut libc::c_char,
            };
            init
        },
    ]
};
#[no_mangle]
pub static mut shell_builtins: *mut builtin = unsafe { static_shell_builtins.as_ptr() as *mut _ };
#[no_mangle]
pub static mut current_builtin: *mut builtin = 0 as *const builtin as *mut builtin;
#[no_mangle]
pub static mut num_shell_builtins: libc::c_int =
    (::std::mem::size_of::<[builtin; 77]>() as libc::c_ulong)
        .wrapping_div(::std::mem::size_of::<builtin>() as libc::c_ulong)
        .wrapping_sub(1 as libc::c_int as libc::c_ulong) as libc::c_int;
// pub static mut num_shell_builtins: libc::c_int = 0;

#[no_mangle]
pub static mut alias_doc: [*mut libc::c_char; 2] = [
    b"Define or display aliases.\n    \n    Without arguments, `alias' prints the list of aliases in the reusable\n    form `alias NAME=VALUE' on standard output.\n    \n    Otherwise, an alias is defined for each NAME whose VALUE is given.\n    A trailing space in VALUE causes the next word to be checked for\n    alias substitution when the alias is expanded.\n    \n    Options:\n      -p\tprint all defined aliases in a reusable format\n    \n    Exit Status:\n    alias returns true unless a NAME is supplied for which no alias has been\n    defined.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut unalias_doc: [*mut libc::c_char; 2] = [
    b"Remove each NAME from the list of defined aliases.\n    \n    Options:\n      -a\tremove all alias definitions\n    \n    Return success unless a NAME is not an existing alias.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut bind_doc: [*mut libc::c_char; 2] = [
    b"Set Readline key bindings and variables.\n    \n    Bind a key sequence to a Readline function or a macro, or set a\n    Readline variable.  The non-option argument syntax is equivalent to\n    that found in ~/.inputrc, but must be passed as a single argument:\n    e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n    \n    Options:\n      -m  keymap         Use KEYMAP as the keymap for the duration of this\n                         command.  Acceptable keymap names are emacs,\n                         emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n                         vi-command, and vi-insert.\n      -l                 List names of functions.\n      -P                 List function names and bindings.\n      -p                 List functions and bindings in a form that can be\n                         reused as input.\n      -S                 List key sequences that invoke macros and their values\n      -s                 List key sequences that invoke macros and their values\n                         in a form that can be reused as input.\n      -V                 List variable names and values\n      -v                 List variable names and values in a form that can\n                         be reused as input.\n      -q  function-name  Query about which keys invoke the named function.\n      -u  function-name  Unbind all keys which are bound to the named function.\n      -r  keyseq         Remove the binding for KEYSEQ.\n      -f  filename       Read key bindings from FILENAME.\n      -x  keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n    \t\t\t\tKEYSEQ is entered.\n      -X                 List key sequences bound with -x and associated commands\n                         in a form that can be reused as input.\n    \n    Exit Status:\n    bind returns 0 unless an unrecognized option is given or an error occurs.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut break_doc: [*mut libc::c_char; 2] = [
    b"Exit for, while, or until loops.\n    \n    Exit a FOR, WHILE or UNTIL loop.  If N is specified, break N enclosing\n    loops.\n    \n    Exit Status:\n    The exit status is 0 unless N is not greater than or equal to 1.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut continue_doc: [*mut libc::c_char; 2] = [
    b"Resume for, while, or until loops.\n    \n    Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n    If N is specified, resumes the Nth enclosing loop.\n    \n    Exit Status:\n    The exit status is 0 unless N is not greater than or equal to 1.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut builtin_doc: [*mut libc::c_char; 2] = [
    b"Execute shell builtins.\n    \n    Execute SHELL-BUILTIN with arguments ARGs without performing command\n    lookup.  This is useful when you wish to reimplement a shell builtin\n    as a shell function, but need to execute the builtin within the function.\n    \n    Exit Status:\n    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n    not a shell builtin.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut caller_doc: [*mut libc::c_char; 2] = [
    b"Return the context of the current subroutine call.\n    \n    Without EXPR, returns \"$line $filename\".  With EXPR, returns\n    \"$line $subroutine $filename\"; this extra information can be used to\n    provide a stack trace.\n    \n    The value of EXPR indicates how many call frames to go back before the\n    current one; the top frame is frame 0.\n    \n    Exit Status:\n    Returns 0 unless the shell is not executing a shell function or EXPR\n    is invalid.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut cd_doc: [*mut libc::c_char; 2] = [
    b"Change the shell working directory.\n    \n    Change the current directory to DIR.  The default DIR is the value of the\n    HOME shell variable.\n    \n    The variable CDPATH defines the search path for the directory containing\n    DIR.  Alternative directory names in CDPATH are separated by a colon (:).\n    A null directory name is the same as the current directory.  If DIR begins\n    with a slash (/), then CDPATH is not used.\n    \n    If the directory is not found, and the shell option `cdable_vars' is set,\n    the word is assumed to be  a variable name.  If that variable has a value,\n    its value is used for DIR.\n    \n    Options:\n      -L\tforce symbolic links to be followed: resolve symbolic\n    \t\tlinks in DIR after processing instances of `..'\n      -P\tuse the physical directory structure without following\n    \t\tsymbolic links: resolve symbolic links in DIR before\n    \t\tprocessing instances of `..'\n      -e\tif the -P option is supplied, and the current working\n    \t\tdirectory cannot be determined successfully, exit with\n    \t\ta non-zero status\n      -@\ton systems that support it, present a file with extended\n    \t\tattributes as a directory containing the file attributes\n    \n    The default is to follow symbolic links, as if `-L' were specified.\n    `..' is processed by removing the immediately previous pathname component\n    back to a slash or the beginning of DIR.\n    \n    Exit Status:\n    Returns 0 if the directory is changed, and if $PWD is set successfully when\n    -P is used; non-zero otherwise.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut pwd_doc: [*mut libc::c_char; 2] = [
    b"Print the name of the current working directory.\n    \n    Options:\n      -L\tprint the value of $PWD if it names the current working\n    \t\tdirectory\n      -P\tprint the physical directory, without any symbolic links\n    \n    By default, `pwd' behaves as if `-L' were specified.\n    \n    Exit Status:\n    Returns 0 unless an invalid option is given or the current directory\n    cannot be read.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut colon_doc: [*mut libc::c_char; 2] = [
    b"Null command.\n    \n    No effect; the command does nothing.\n    \n    Exit Status:\n    Always succeeds.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut true_doc: [*mut libc::c_char; 2] = [
    b"Return a successful result.\n    \n    Exit Status:\n    Always succeeds.\0" as *const u8
        as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut false_doc: [*mut libc::c_char; 2] = [
    b"Return an unsuccessful result.\n    \n    Exit Status:\n    Always fails.\0" as *const u8
        as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut command_doc: [*mut libc::c_char; 2] = [
    b"Execute a simple command or display information about commands.\n    \n    Runs COMMAND with ARGS suppressing  shell function lookup, or display\n    information about the specified COMMANDs.  Can be used to invoke commands\n    on disk when a function with the same name exists.\n    \n    Options:\n      -p    use a default value for PATH that is guaranteed to find all of\n            the standard utilities\n      -v    print a description of COMMAND similar to the `type' builtin\n      -V    print a more verbose description of each COMMAND\n    \n    Exit Status:\n    Returns exit status of COMMAND, or failure if COMMAND is not found.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut declare_doc: [*mut libc::c_char; 2] = [
    b"Set variable values and attributes.\n    \n    Declare variables and give them attributes.  If no NAMEs are given,\n    display the attributes and values of all variables.\n    \n    Options:\n      -f\trestrict action or display to function names and definitions\n      -F\trestrict display to function names only (plus line number and\n    \t\tsource file when debugging)\n      -g\tcreate global variables when used in a shell function; otherwise\n    \t\tignored\n      -I\tif creating a local variable, inherit the attributes and value\n    \t\tof a variable with the same name at a previous scope\n      -p\tdisplay the attributes and value of each NAME\n    \n    Options which set attributes:\n      -a\tto make NAMEs indexed arrays (if supported)\n      -A\tto make NAMEs associative arrays (if supported)\n      -i\tto make NAMEs have the `integer' attribute\n      -l\tto convert the value of each NAME to lower case on assignment\n      -n\tmake NAME a reference to the variable named by its value\n      -r\tto make NAMEs readonly\n      -t\tto make NAMEs have the `trace' attribute\n      -u\tto convert the value of each NAME to upper case on assignment\n      -x\tto make NAMEs export\n    \n    Using `+' instead of `-' turns off the given attribute.\n    \n    Variables with the integer attribute have arithmetic evaluation (see\n    the `let' command) performed when the variable is assigned a value.\n    \n    When used in a function, `declare' makes NAMEs local, as with the `local'\n    command.  The `-g' option suppresses this behavior.\n    \n    Exit Status:\n    Returns success unless an invalid option is supplied or a variable\n    assignment error occurs.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut typeset_doc: [*mut libc::c_char; 2] = [
    b"Set variable values and attributes.\n    \n    A synonym for `declare'.  See `help declare'.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut local_doc: [*mut libc::c_char; 2] = [
    b"Define local variables.\n    \n    Create a local variable called NAME, and give it VALUE.  OPTION can\n    be any option accepted by `declare'.\n    \n    Local variables can only be used within a function; they are visible\n    only to the function where they are defined and its children.\n    \n    Exit Status:\n    Returns success unless an invalid option is supplied, a variable\n    assignment error occurs, or the shell is not executing a function.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut echo_doc: [*mut libc::c_char; 2] = [
    b"Write arguments to the standard output.\n    \n    Display the ARGs, separated by a single space character and followed by a\n    newline, on the standard output.\n    \n    Options:\n      -n\tdo not append a newline\n      -e\tenable interpretation of the following backslash escapes\n      -E\texplicitly suppress interpretation of backslash escapes\n    \n    `echo' interprets the following backslash-escaped characters:\n      \\a\talert (bell)\n      \\b\tbackspace\n      \\c\tsuppress further output\n      \\e\tescape character\n      \\E\tescape character\n      \\f\tform feed\n      \\n\tnew line\n      \\r\tcarriage return\n      \\t\thorizontal tab\n      \\v\tvertical tab\n      \\\\\tbackslash\n      \\0nnn\tthe character whose ASCII code is NNN (octal).  NNN can be\n    \t\t0 to 3 octal digits\n      \\xHH\tthe eight-bit character whose value is HH (hexadecimal).  HH\n    \t\tcan be one or two hex digits\n      \\uHHHH\tthe Unicode character whose value is the hexadecimal value HHHH.\n    \t\tHHHH can be one to four hex digits.\n      \\UHHHHHHHH the Unicode character whose value is the hexadecimal value\n    \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n    \n    Exit Status:\n    Returns success unless a write error occurs.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut enable_doc: [*mut libc::c_char; 2] = [
    b"Enable and disable shell builtins.\n    \n    Enables and disables builtin shell commands.  Disabling allows you to\n    execute a disk command which has the same name as a shell builtin\n    without using a full pathname.\n    \n    Options:\n      -a\tprint a list of builtins showing whether or not each is enabled\n      -n\tdisable each NAME or display a list of disabled builtins\n      -p\tprint the list of builtins in a reusable format\n      -s\tprint only the names of Posix `special' builtins\n    \n    Options controlling dynamic loading:\n      -f\tLoad builtin NAME from shared object FILENAME\n      -d\tRemove a builtin loaded with -f\n    \n    Without options, each NAME is enabled.\n    \n    To use the `test' found in $PATH instead of the shell builtin\n    version, type `enable -n test'.\n    \n    Exit Status:\n    Returns success unless NAME is not a shell builtin or an error occurs.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut eval_doc: [*mut libc::c_char; 2] = [
    b"Execute arguments as a shell command.\n    \n    Combine ARGs into a single string, use the result as input to the shell,\n    and execute the resulting commands.\n    \n    Exit Status:\n    Returns exit status of command or success if command is null.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut getopts_doc: [*mut libc::c_char; 2] = [
    b"Parse option arguments.\n    \n    Getopts is used by shell procedures to parse positional parameters\n    as options.\n    \n    OPTSTRING contains the option letters to be recognized; if a letter\n    is followed by a colon, the option is expected to have an argument,\n    which should be separated from it by white space.\n    \n    Each time it is invoked, getopts will place the next option in the\n    shell variable $name, initializing name if it does not exist, and\n    the index of the next argument to be processed into the shell\n    variable OPTIND.  OPTIND is initialized to 1 each time the shell or\n    a shell script is invoked.  When an option requires an argument,\n    getopts places that argument into the shell variable OPTARG.\n    \n    getopts reports errors in one of two ways.  If the first character\n    of OPTSTRING is a colon, getopts uses silent error reporting.  In\n    this mode, no error messages are printed.  If an invalid option is\n    seen, getopts places the option character found into OPTARG.  If a\n    required argument is not found, getopts places a ':' into NAME and\n    sets OPTARG to the option character found.  If getopts is not in\n    silent mode, and an invalid option is seen, getopts places '?' into\n    NAME and unsets OPTARG.  If a required argument is not found, a '?'\n    is placed in NAME, OPTARG is unset, and a diagnostic message is\n    printed.\n    \n    If the shell variable OPTERR has the value 0, getopts disables the\n    printing of error messages, even if the first character of\n    OPTSTRING is not a colon.  OPTERR has the value 1 by default.\n    \n    Getopts normally parses the positional parameters, but if arguments\n    are supplied as ARG values, they are parsed instead.\n    \n    Exit Status:\n    Returns success if an option is found; fails if the end of options is\n    encountered or an error occurs.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut exec_doc: [*mut libc::c_char; 2] = [
    b"Replace the shell with the given command.\n    \n    Execute COMMAND, replacing this shell with the specified program.\n    ARGUMENTS become the arguments to COMMAND.  If COMMAND is not specified,\n    any redirections take effect in the current shell.\n    \n    Options:\n      -a name\tpass NAME as the zeroth argument to COMMAND\n      -c\texecute COMMAND with an empty environment\n      -l\tplace a dash in the zeroth argument to COMMAND\n    \n    If the command cannot be executed, a non-interactive shell exits, unless\n    the shell option `execfail' is set.\n    \n    Exit Status:\n    Returns success unless COMMAND is not found or a redirection error occurs.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut exit_doc: [*mut libc::c_char; 2] = [
    b"Exit the shell.\n    \n    Exits the shell with a status of N.  If N is omitted, the exit status\n    is that of the last command executed.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut logout_doc: [*mut libc::c_char; 2] = [
    b"Exit a login shell.\n    \n    Exits a login shell with exit status N.  Returns an error if not executed\n    in a login shell.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut fc_doc: [*mut libc::c_char; 2] = [
    b"Display or execute commands from the history list.\n    \n    fc is used to list or edit and re-execute commands from the history list.\n    FIRST and LAST can be numbers specifying the range, or FIRST can be a\n    string, which means the most recent command beginning with that\n    string.\n    \n    Options:\n      -e ENAME\tselect which editor to use.  Default is FCEDIT, then EDITOR,\n    \t\tthen vi\n      -l \tlist lines instead of editing\n      -n\tomit line numbers when listing\n      -r\treverse the order of the lines (newest listed first)\n    \n    With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n    re-executed after the substitution OLD=NEW is performed.\n    \n    A useful alias to use with this is r='fc -s', so that typing `r cc'\n    runs the last command beginning with `cc' and typing `r' re-executes\n    the last command.\n    \n    Exit Status:\n    Returns success or status of executed command; non-zero if an error occurs.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut fg_doc: [*mut libc::c_char; 2] = [
    b"Move job to the foreground.\n    \n    Place the job identified by JOB_SPEC in the foreground, making it the\n    current job.  If JOB_SPEC is not present, the shell's notion of the\n    current job is used.\n    \n    Exit Status:\n    Status of command placed in foreground, or failure if an error occurs.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut bg_doc: [*mut libc::c_char; 2] = [
    b"Move jobs to the background.\n    \n    Place the jobs identified by each JOB_SPEC in the background, as if they\n    had been started with `&'.  If JOB_SPEC is not present, the shell's notion\n    of the current job is used.\n    \n    Exit Status:\n    Returns success unless job control is not enabled or an error occurs.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut hash_doc: [*mut libc::c_char; 2] = [
    b"Remember or display program locations.\n    \n    Determine and remember the full pathname of each command NAME.  If\n    no arguments are given, information about remembered commands is displayed.\n    \n    Options:\n      -d\tforget the remembered location of each NAME\n      -l\tdisplay in a format that may be reused as input\n      -p pathname\tuse PATHNAME as the full pathname of NAME\n      -r\tforget all remembered locations\n      -t\tprint the remembered location of each NAME, preceding\n    \t\teach location with the corresponding NAME if multiple\n    \t\tNAMEs are given\n    Arguments:\n      NAME\tEach NAME is searched for in $PATH and added to the list\n    \t\tof remembered commands.\n    \n    Exit Status:\n    Returns success unless NAME is not found or an invalid option is given.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut help_doc: [*mut libc::c_char; 2] = [
    b"Display information about builtin commands.\n    \n    Displays brief summaries of builtin commands.  If PATTERN is\n    specified, gives detailed help on all commands matching PATTERN,\n    otherwise the list of help topics is printed.\n    \n    Options:\n      -d\toutput short description for each topic\n      -m\tdisplay usage in pseudo-manpage format\n      -s\toutput only a short usage synopsis for each topic matching\n    \t\tPATTERN\n    \n    Arguments:\n      PATTERN\tPattern specifying a help topic\n    \n    Exit Status:\n    Returns success unless PATTERN is not found or an invalid option is given.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut history_doc: [*mut libc::c_char; 2] = [
    b"Display or manipulate the history list.\n    \n    Display the history list with line numbers, prefixing each modified\n    entry with a `*'.  An argument of N lists only the last N entries.\n    \n    Options:\n      -c\tclear the history list by deleting all of the entries\n      -d offset\tdelete the history entry at position OFFSET. Negative\n    \t\toffsets count back from the end of the history list\n    \n      -a\tappend history lines from this session to the history file\n      -n\tread all history lines not already read from the history file\n    \t\tand append them to the history list\n      -r\tread the history file and append the contents to the history\n    \t\tlist\n      -w\twrite the current history to the history file\n    \n      -p\tperform history expansion on each ARG and display the result\n    \t\twithout storing it in the history list\n      -s\tappend the ARGs to the history list as a single entry\n    \n    If FILENAME is given, it is used as the history file.  Otherwise,\n    if HISTFILE has a value, that is used, else ~/.utshell_history.\n    \n    If the HISTTIMEFORMAT variable is set and not null, its value is used\n    as a format string for strftime(3) to print the time stamp associated\n    with each displayed history entry.  No time stamps are printed otherwise.\n    \n    Exit Status:\n    Returns success unless an invalid option is given or an error occurs.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut jobs_doc: [*mut libc::c_char; 2] = [
    b"Display status of jobs.\n    \n    Lists the active jobs.  JOBSPEC restricts output to that job.\n    Without options, the status of all active jobs is displayed.\n    \n    Options:\n      -l\tlists process IDs in addition to the normal information\n      -n\tlists only processes that have changed status since the last\n    \t\tnotification\n      -p\tlists process IDs only\n      -r\trestrict output to running jobs\n      -s\trestrict output to stopped jobs\n    \n    If -x is supplied, COMMAND is run after all job specifications that\n    appear in ARGS have been replaced with the process ID of that job's\n    process group leader.\n    \n    Exit Status:\n    Returns success unless an invalid option is given or an error occurs.\n    If -x is used, returns the exit status of COMMAND.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut disown_doc: [*mut libc::c_char; 2] = [
    b"Remove jobs from current shell.\n    \n    Removes each JOBSPEC argument from the table of active jobs.  Without\n    any JOBSPECs, the shell uses its notion of the current job.\n    \n    Options:\n      -a\tremove all jobs if JOBSPEC is not supplied\n      -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n    \t\tshell receives a SIGHUP\n      -r\tremove only running jobs\n    \n    Exit Status:\n    Returns success unless an invalid option or JOBSPEC is given.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut kill_doc: [*mut libc::c_char; 2] = [
    b"Send a signal to a job.\n    \n    Send the processes identified by PID or JOBSPEC the signal named by\n    SIGSPEC or SIGNUM.  If neither SIGSPEC nor SIGNUM is present, then\n    SIGTERM is assumed.\n    \n    Options:\n      -s sig\tSIG is a signal name\n      -n sig\tSIG is a signal number\n      -l\tlist the signal names; if arguments follow `-l' they are\n    \t\tassumed to be signal numbers for which names should be listed\n      -L\tsynonym for -l\n    \n    Kill is a shell builtin for two reasons: it allows job IDs to be used\n    instead of process IDs, and allows processes to be killed if the limit\n    on processes that you can create is reached.\n    \n    Exit Status:\n    Returns success unless an invalid option is given or an error occurs.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut let_doc: [*mut libc::c_char; 2] = [
    b"Evaluate arithmetic expressions.\n    \n    Evaluate each ARG as an arithmetic expression.  Evaluation is done in\n    fixed-width integers with no check for overflow, though division by 0\n    is trapped and flagged as an error.  The following list of operators is\n    grouped into levels of equal-precedence operators.  The levels are listed\n    in order of decreasing precedence.\n    \n    \tid++, id--\tvariable post-increment, post-decrement\n    \t++id, --id\tvariable pre-increment, pre-decrement\n    \t-, +\t\tunary minus, plus\n    \t!, ~\t\tlogical and bitwise negation\n    \t**\t\texponentiation\n    \t*, /, %\t\tmultiplication, division, remainder\n    \t+, -\t\taddition, subtraction\n    \t<<, >>\t\tleft and right bitwise shifts\n    \t<=, >=, <, >\tcomparison\n    \t==, !=\t\tequality, inequality\n    \t&\t\tbitwise AND\n    \t^\t\tbitwise XOR\n    \t|\t\tbitwise OR\n    \t&&\t\tlogical AND\n    \t||\t\tlogical OR\n    \texpr ? expr : expr\n    \t\t\tconditional operator\n    \t=, *=, /=, %=,\n    \t+=, -=, <<=, >>=,\n    \t&=, ^=, |=\tassignment\n    \n    Shell variables are allowed as operands.  The name of the variable\n    is replaced by its value (coerced to a fixed-width integer) within\n    an expression.  The variable need not have its integer attribute\n    turned on to be used in an expression.\n    \n    Operators are evaluated in order of precedence.  Sub-expressions in\n    parentheses are evaluated first and may override the precedence\n    rules above.\n    \n    Exit Status:\n    If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut read_doc: [*mut libc::c_char; 2] = [
    b"Read a line from the standard input and split it into fields.\n    \n    Reads a single line from the standard input, or from file descriptor FD\n    if the -u option is supplied.  The line is split into fields as with word\n    splitting, and the first word is assigned to the first NAME, the second\n    word to the second NAME, and so on, with any leftover words assigned to\n    the last NAME.  Only the characters found in $IFS are recognized as word\n    delimiters.\n    \n    If no NAMEs are supplied, the line read is stored in the REPLY variable.\n    \n    Options:\n      -a array\tassign the words read to sequential indices of the array\n    \t\tvariable ARRAY, starting at zero\n      -d delim\tcontinue until the first character of DELIM is read, rather\n    \t\tthan newline\n      -e\tuse Readline to obtain the line\n      -i text\tuse TEXT as the initial text for Readline\n      -n nchars\treturn after reading NCHARS characters rather than waiting\n    \t\tfor a newline, but honor a delimiter if fewer than\n    \t\tNCHARS characters are read before the delimiter\n      -N nchars\treturn only after reading exactly NCHARS characters, unless\n    \t\tEOF is encountered or read times out, ignoring any\n    \t\tdelimiter\n      -p prompt\toutput the string PROMPT without a trailing newline before\n    \t\tattempting to read\n      -r\tdo not allow backslashes to escape any characters\n      -s\tdo not echo input coming from a terminal\n      -t timeout\ttime out and return failure if a complete line of\n    \t\tinput is not read within TIMEOUT seconds.  The value of the\n    \t\tTMOUT variable is the default timeout.  TIMEOUT may be a\n    \t\tfractional number.  If TIMEOUT is 0, read returns\n    \t\timmediately, without trying to read any data, returning\n    \t\tsuccess only if input is available on the specified\n    \t\tfile descriptor.  The exit status is greater than 128\n    \t\tif the timeout is exceeded\n      -u fd\tread from file descriptor FD instead of the standard input\n    \n    Exit Status:\n    The return code is zero, unless end-of-file is encountered, read times out\n    (in which case it's greater than 128), a variable assignment error occurs,\n    or an invalid file descriptor is supplied as the argument to -u.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut return_doc: [*mut libc::c_char; 2] = [
    b"Return from a shell function.\n    \n    Causes a function or sourced script to exit with the return value\n    specified by N.  If N is omitted, the return status is that of the\n    last command executed within the function or script.\n    \n    Exit Status:\n    Returns N, or failure if the shell is not executing a function or script.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut set_doc: [*mut libc::c_char; 2] = [
    b"Set or unset values of shell options and positional parameters.\n    \n    Change the value of shell attributes and positional parameters, or\n    display the names and values of shell variables.\n    \n    Options:\n      -a  Mark variables which are modified or created for export.\n      -b  Notify of job termination immediately.\n      -e  Exit immediately if a command exits with a non-zero status.\n      -f  Disable file name generation (globbing).\n      -h  Remember the location of commands as they are looked up.\n      -k  All assignment arguments are placed in the environment for a\n          command, not just those that precede the command name.\n      -m  Job control is enabled.\n      -n  Read commands but do not execute them.\n      -o option-name\n          Set the variable corresponding to option-name:\n              allexport    same as -a\n              braceexpand  same as -B\n              emacs        use an emacs-style line editing interface\n              errexit      same as -e\n              errtrace     same as -E\n              functrace    same as -T\n              hashall      same as -h\n              histexpand   same as -H\n              history      enable command history\n              ignoreeof    the shell will not exit upon reading EOF\n              interactive-comments\n                           allow comments to appear in interactive commands\n              keyword      same as -k\n              monitor      same as -m\n              noclobber    same as -C\n              noexec       same as -n\n              noglob       same as -f\n              nolog        currently accepted but ignored\n              notify       same as -b\n              nounset      same as -u\n              onecmd       same as -t\n              physical     same as -P\n              pipefail     the return value of a pipeline is the status of\n                           the last command to exit with a non-zero status,\n                           or zero if no command exited with a non-zero status\n              posix        change the behavior of bash where the default\n                           operation differs from the Posix standard to\n                           match the standard\n              privileged   same as -p\n              verbose      same as -v\n              vi           use a vi-style line editing interface\n              xtrace       same as -x\n      -p  Turned on whenever the real and effective user ids do not match.\n          Disables processing of the $ENV file and importing of shell\n          functions.  Turning this option off causes the effective uid and\n          gid to be set to the real uid and gid.\n      -t  Exit after reading and executing one command.\n      -u  Treat unset variables as an error when substituting.\n      -v  Print shell input lines as they are read.\n      -x  Print commands and their arguments as they are executed.\n      -B  the shell will perform brace expansion\n      -C  If set, disallow existing regular files to be overwritten\n          by redirection of output.\n      -E  If set, the ERR trap is inherited by shell functions.\n      -H  Enable ! style history substitution.  This flag is on\n          by default when the shell is interactive.\n      -P  If set, do not resolve symbolic links when executing commands\n          such as cd which change the current directory.\n      -T  If set, the DEBUG and RETURN traps are inherited by shell functions.\n      --  Assign any remaining arguments to the positional parameters.\n          If there are no remaining arguments, the positional parameters\n          are unset.\n      -   Assign any remaining arguments to the positional parameters.\n          The -x and -v options are turned off.\n    \n    Using + rather than - causes these flags to be turned off.  The\n    flags can also be used upon invocation of the shell.  The current\n    set of flags may be found in $-.  The remaining n ARGs are positional\n    parameters and are assigned, in order, to $1, $2, .. $n.  If no\n    ARGs are given, all shell variables are printed.\n    \n    Exit Status:\n    Returns success unless an invalid option is given.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut unset_doc: [*mut libc::c_char; 2] = [
    b"Unset values and attributes of shell variables and functions.\n    \n    For each NAME, remove the corresponding variable or function.\n    \n    Options:\n      -f\ttreat each NAME as a shell function\n      -v\ttreat each NAME as a shell variable\n      -n\ttreat each NAME as a name reference and unset the variable itself\n    \t\trather than the variable it references\n    \n    Without options, unset first tries to unset a variable, and if that fails,\n    tries to unset a function.\n    \n    Some variables cannot be unset; also see `readonly'.\n    \n    Exit Status:\n    Returns success unless an invalid option is given or a NAME is read-only.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut export_doc: [*mut libc::c_char; 2] = [
    b"Set export attribute for shell variables.\n    \n    Marks each NAME for automatic export to the environment of subsequently\n    executed commands.  If VALUE is supplied, assign VALUE before exporting.\n    \n    Options:\n      -f\trefer to shell functions\n      -n\tremove the export property from each NAME\n      -p\tdisplay a list of all exported variables and functions\n    \n    An argument of `--' disables further option processing.\n    \n    Exit Status:\n    Returns success unless an invalid option is given or NAME is invalid.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut readonly_doc: [*mut libc::c_char; 2] = [
    b"Mark shell variables as unchangeable.\n    \n    Mark each NAME as read-only; the values of these NAMEs may not be\n    changed by subsequent assignment.  If VALUE is supplied, assign VALUE\n    before marking as read-only.\n    \n    Options:\n      -a\trefer to indexed array variables\n      -A\trefer to associative array variables\n      -f\trefer to shell functions\n      -p\tdisplay a list of all readonly variables or functions,\n    \t\tdepending on whether or not the -f option is given\n    \n    An argument of `--' disables further option processing.\n    \n    Exit Status:\n    Returns success unless an invalid option is given or NAME is invalid.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut shift_doc: [*mut libc::c_char; 2] = [
    b"Shift positional parameters.\n    \n    Rename the positional parameters $N+1,$N+2 ... to $1,$2 ...  If N is\n    not given, it is assumed to be 1.\n    \n    Exit Status:\n    Returns success unless N is negative or greater than $#.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut source_doc: [*mut libc::c_char; 2] = [
    b"Execute commands from a file in the current shell.\n    \n    Read and execute commands from FILENAME in the current shell.  The\n    entries in $PATH are used to find the directory containing FILENAME.\n    If any ARGUMENTS are supplied, they become the positional parameters\n    when FILENAME is executed.\n    \n    Exit Status:\n    Returns the status of the last command executed in FILENAME; fails if\n    FILENAME cannot be read.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut dot_doc: [*mut libc::c_char; 2] = [
    b"Execute commands from a file in the current shell.\n    \n    Read and execute commands from FILENAME in the current shell.  The\n    entries in $PATH are used to find the directory containing FILENAME.\n    If any ARGUMENTS are supplied, they become the positional parameters\n    when FILENAME is executed.\n    \n    Exit Status:\n    Returns the status of the last command executed in FILENAME; fails if\n    FILENAME cannot be read.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut suspend_doc: [*mut libc::c_char; 2] = [
    b"Suspend shell execution.\n    \n    Suspend the execution of this shell until it receives a SIGCONT signal.\n    Unless forced, login shells cannot be suspended.\n    \n    Options:\n      -f\tforce the suspend, even if the shell is a login shell\n    \n    Exit Status:\n    Returns success unless job control is not enabled or an error occurs.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut test_doc: [*mut libc::c_char; 2] = [
    b"Evaluate conditional expression.\n    \n    Exits with a status of 0 (true) or 1 (false) depending on\n    the evaluation of EXPR.  Expressions may be unary or binary.  Unary\n    expressions are often used to examine the status of a file.  There\n    are string operators and numeric comparison operators as well.\n    \n    The behavior of test depends on the number of arguments.  Read the\n    bash manual page for the complete specification.\n    \n    File operators:\n    \n      -a FILE        True if file exists.\n      -b FILE        True if file is block special.\n      -c FILE        True if file is character special.\n      -d FILE        True if file is a directory.\n      -e FILE        True if file exists.\n      -f FILE        True if file exists and is a regular file.\n      -g FILE        True if file is set-group-id.\n      -h FILE        True if file is a symbolic link.\n      -L FILE        True if file is a symbolic link.\n      -k FILE        True if file has its `sticky' bit set.\n      -p FILE        True if file is a named pipe.\n      -r FILE        True if file is readable by you.\n      -s FILE        True if file exists and is not empty.\n      -S FILE        True if file is a socket.\n      -t FD          True if FD is opened on a terminal.\n      -u FILE        True if the file is set-user-id.\n      -w FILE        True if the file is writable by you.\n      -x FILE        True if the file is executable by you.\n      -O FILE        True if the file is effectively owned by you.\n      -G FILE        True if the file is effectively owned by your group.\n      -N FILE        True if the file has been modified since it was last read.\n    \n      FILE1 -nt FILE2  True if file1 is newer than file2 (according to\n                       modification date).\n    \n      FILE1 -ot FILE2  True if file1 is older than file2.\n    \n      FILE1 -ef FILE2  True if file1 is a hard link to file2.\n    \n    String operators:\n    \n      -z STRING      True if string is empty.\n    \n      -n STRING\n         STRING      True if string is not empty.\n    \n      STRING1 = STRING2\n                     True if the strings are equal.\n      STRING1 != STRING2\n                     True if the strings are not equal.\n      STRING1 < STRING2\n                     True if STRING1 sorts before STRING2 lexicographically.\n      STRING1 > STRING2\n                     True if STRING1 sorts after STRING2 lexicographically.\n    \n    Other operators:\n    \n      -o OPTION      True if the shell option OPTION is enabled.\n      -v VAR         True if the shell variable VAR is set.\n      -R VAR         True if the shell variable VAR is set and is a name\n                     reference.\n      ! EXPR         True if expr is false.\n      EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n      EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n    \n      arg1 OP arg2   Arithmetic tests.  OP is one of -eq, -ne,\n                     -lt, -le, -gt, or -ge.\n    \n    Arithmetic binary operators return true if ARG1 is equal, not-equal,\n    less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n    than ARG2.\n    \n    Exit Status:\n    Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n    false or an invalid argument is given.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut test_bracket_doc: [*mut libc::c_char; 2] = [
    b"Evaluate conditional expression.\n    \n    This is a synonym for the \"test\" builtin, but the last argument must\n    be a literal `]', to match the opening `['.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut times_doc: [*mut libc::c_char; 2] = [
    b"Display process times.\n    \n    Prints the accumulated user and system times for the shell and all of its\n    child processes.\n    \n    Exit Status:\n    Always succeeds.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut trap_doc: [*mut libc::c_char; 2] = [
    b"Trap signals and other events.\n    \n    Defines and activates handlers to be run when the shell receives signals\n    or other conditions.\n    \n    ARG is a command to be read and executed when the shell receives the\n    signal(s) SIGNAL_SPEC.  If ARG is absent (and a single SIGNAL_SPEC\n    is supplied) or `-', each specified signal is reset to its original\n    value.  If ARG is the null string each SIGNAL_SPEC is ignored by the\n    shell and by the commands it invokes.\n    \n    If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell.  If\n    a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command.  If\n    a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n    script run by the . or source builtins finishes executing.  A SIGNAL_SPEC\n    of ERR means to execute ARG each time a command's failure would cause the\n    shell to exit when the -e option is enabled.\n    \n    If no arguments are supplied, trap prints the list of commands associated\n    with each signal.\n    \n    Options:\n      -l\tprint a list of signal names and their corresponding numbers\n      -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n    \n    Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal number.\n    Signal names are case insensitive and the SIG prefix is optional.  A\n    signal may be sent to the shell with \"kill -signal $$\".\n    \n    Exit Status:\n    Returns success unless a SIGSPEC is invalid or an invalid option is given.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut type_doc: [*mut libc::c_char; 2] = [
    b"Display information about command type.\n    \n    For each NAME, indicate how it would be interpreted if used as a\n    command name.\n    \n    Options:\n      -a\tdisplay all locations containing an executable named NAME;\n    \t\tincludes aliases, builtins, and functions, if and only if\n    \t\tthe `-p' option is not also used\n      -f\tsuppress shell function lookup\n      -P\tforce a PATH search for each NAME, even if it is an alias,\n    \t\tbuiltin, or function, and returns the name of the disk file\n    \t\tthat would be executed\n      -p\treturns either the name of the disk file that would be executed,\n    \t\tor nothing if `type -t NAME' would not return `file'\n      -t\toutput a single word which is one of `alias', `keyword',\n    \t\t`function', `builtin', `file' or `', if NAME is an alias,\n    \t\tshell reserved word, shell function, shell builtin, disk file,\n    \t\tor not found, respectively\n    \n    Arguments:\n      NAME\tCommand name to be interpreted.\n    \n    Exit Status:\n    Returns success if all of the NAMEs are found; fails if any are not found.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut ulimit_doc: [*mut libc::c_char; 2] = [
    b"Modify shell resource limits.\n    \n    Provides control over the resources available to the shell and processes\n    it creates, on systems that allow such control.\n    \n    Options:\n      -S\tuse the `soft' resource limit\n      -H\tuse the `hard' resource limit\n      -a\tall current limits are reported\n      -b\tthe socket buffer size\n      -c\tthe maximum size of core files created\n      -d\tthe maximum size of a process's data segment\n      -e\tthe maximum scheduling priority (`nice')\n      -f\tthe maximum size of files written by the shell and its children\n      -i\tthe maximum number of pending signals\n      -k\tthe maximum number of kqueues allocated for this process\n      -l\tthe maximum size a process may lock into memory\n      -m\tthe maximum resident set size\n      -n\tthe maximum number of open file descriptors\n      -p\tthe pipe buffer size\n      -q\tthe maximum number of bytes in POSIX message queues\n      -r\tthe maximum real-time scheduling priority\n      -s\tthe maximum stack size\n      -t\tthe maximum amount of cpu time in seconds\n      -u\tthe maximum number of user processes\n      -v\tthe size of virtual memory\n      -x\tthe maximum number of file locks\n      -P\tthe maximum number of pseudoterminals\n      -R\tthe maximum time a real-time process can run before blocking\n      -T\tthe maximum number of threads\n    \n    Not all options are available on all platforms.\n    \n    If LIMIT is given, it is the new value of the specified resource; the\n    special LIMIT values `soft', `hard', and `unlimited' stand for the\n    current soft limit, the current hard limit, and no limit, respectively.\n    Otherwise, the current value of the specified resource is printed.  If\n    no option is given, then -f is assumed.\n    \n    Values are in 1024-byte increments, except for -t, which is in seconds,\n    -p, which is in increments of 512 bytes, and -u, which is an unscaled\n    number of processes.\n    \n    Exit Status:\n    Returns success unless an invalid option is supplied or an error occurs.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut umask_doc: [*mut libc::c_char; 2] = [
    b"Display or set file mode mask.\n    \n    Sets the user file-creation mask to MODE.  If MODE is omitted, prints\n    the current value of the mask.\n    \n    If MODE begins with a digit, it is interpreted as an octal number;\n    otherwise it is a symbolic mode string like that accepted by chmod(1).\n    \n    Options:\n      -p\tif MODE is omitted, output in a form that may be reused as input\n      -S\tmakes the output symbolic; otherwise an octal number is output\n    \n    Exit Status:\n    Returns success unless MODE is invalid or an invalid option is given.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut wait_doc: [*mut libc::c_char; 2] = [
    b"Wait for job completion and return exit status.\n    \n    Waits for each process identified by an ID, which may be a process ID or a\n    job specification, and reports its termination status.  If ID is not\n    given, waits for all currently active child processes, and the return\n    status is zero.  If ID is a job specification, waits for all processes\n    in that job's pipeline.\n    \n    If the -n option is supplied, waits for a single job from the list of IDs,\n    or, if no IDs are supplied, for the next job to complete and returns its\n    exit status.\n    \n    If the -p option is supplied, the process or job identifier of the job\n    for which the exit status is returned is assigned to the variable VAR\n    named by the option argument. The variable will be unset initially, before\n    any assignment. This is useful only when the -n option is supplied.\n    \n    If the -f option is supplied, and job control is enabled, waits for the\n    specified ID to terminate, instead of waiting for it to change status.\n    \n    Exit Status:\n    Returns the status of the last ID; fails if ID is invalid or an invalid\n    option is given, or if -n is supplied and the shell has no unwaited-for\n    children.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut for_doc: [*mut libc::c_char; 2] = [
    b"Execute commands for each member in a list.\n    \n    The `for' loop executes a sequence of commands for each member in a\n    list of items.  If `in WORDS ...;' is not present, then `in \"$@\"' is\n    assumed.  For each element in WORDS, NAME is set to that element, and\n    the COMMANDS are executed.\n    \n    Exit Status:\n    Returns the status of the last command executed.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut arith_for_doc: [*mut libc::c_char; 2] = [
    b"Arithmetic for loop.\n    \n    Equivalent to\n    \t(( EXP1 ))\n    \twhile (( EXP2 )); do\n    \t\tCOMMANDS\n    \t\t(( EXP3 ))\n    \tdone\n    EXP1, EXP2, and EXP3 are arithmetic expressions.  If any expression is\n    omitted, it behaves as if it evaluates to 1.\n    \n    Exit Status:\n    Returns the status of the last command executed.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut select_doc: [*mut libc::c_char; 2] = [
    b"Select words from a list and execute commands.\n    \n    The WORDS are expanded, generating a list of words.  The\n    set of expanded words is printed on the standard error, each\n    preceded by a number.  If `in WORDS' is not present, `in \"$@\"'\n    is assumed.  The PS3 prompt is then displayed and a line read\n    from the standard input.  If the line consists of the number\n    corresponding to one of the displayed words, then NAME is set\n    to that word.  If the line is empty, WORDS and the prompt are\n    redisplayed.  If EOF is read, the command completes.  Any other\n    value read causes NAME to be set to null.  The line read is saved\n    in the variable REPLY.  COMMANDS are executed after each selection\n    until a break command is executed.\n    \n    Exit Status:\n    Returns the status of the last command executed.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut time_doc: [*mut libc::c_char; 2] = [
    b"Report time consumed by pipeline's execution.\n    \n    Execute PIPELINE and print a summary of the real time, user CPU time,\n    and system CPU time spent executing PIPELINE when it terminates.\n    \n    Options:\n      -p\tprint the timing summary in the portable Posix format\n    \n    The value of the TIMEFORMAT variable is used as the output format.\n    \n    Exit Status:\n    The return status is the return status of PIPELINE.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut case_doc: [*mut libc::c_char; 2] = [
    b"Execute commands based on pattern matching.\n    \n    Selectively execute COMMANDS based upon WORD matching PATTERN.  The\n    `|' is used to separate multiple patterns.\n    \n    Exit Status:\n    Returns the status of the last command executed.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut if_doc: [*mut libc::c_char; 2] = [
    b"Execute commands based on conditional.\n    \n    The `if COMMANDS' list is executed.  If its exit status is zero, then the\n    `then COMMANDS' list is executed.  Otherwise, each `elif COMMANDS' list is\n    executed in turn, and if its exit status is zero, the corresponding\n    `then COMMANDS' list is executed and the if command completes.  Otherwise,\n    the `else COMMANDS' list is executed, if present.  The exit status of the\n    entire construct is the exit status of the last command executed, or zero\n    if no condition tested true.\n    \n    Exit Status:\n    Returns the status of the last command executed.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut while_doc: [*mut libc::c_char; 2] = [
    b"Execute commands as long as a test succeeds.\n    \n    Expand and execute COMMANDS as long as the final command in the\n    `while' COMMANDS has an exit status of zero.\n    \n    Exit Status:\n    Returns the status of the last command executed.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut until_doc: [*mut libc::c_char; 2] = [
    b"Execute commands as long as a test does not succeed.\n    \n    Expand and execute COMMANDS as long as the final command in the\n    `until' COMMANDS has an exit status which is not zero.\n    \n    Exit Status:\n    Returns the status of the last command executed.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut coproc_doc: [*mut libc::c_char; 2] = [
    b"Create a coprocess named NAME.\n    \n    Execute COMMAND asynchronously, with the standard output and standard\n    input of the command connected via a pipe to file descriptors assigned\n    to indices 0 and 1 of an array variable NAME in the executing shell.\n    The default NAME is \"COPROC\".\n    \n    Exit Status:\n    The coproc command returns an exit status of 0.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut function_doc: [*mut libc::c_char; 2] = [
    b"Define shell function.\n    \n    Create a shell function named NAME.  When invoked as a simple command,\n    NAME runs COMMANDs in the calling shell's context.  When NAME is invoked,\n    the arguments are passed to the function as $1...$n, and the function's\n    name is in $FUNCNAME.\n    \n    Exit Status:\n    Returns success unless NAME is readonly.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut grouping_braces_doc: [*mut libc::c_char; 2] = [
    b"Group commands as a unit.\n    \n    Run a set of commands in a group.  This is one way to redirect an\n    entire set of commands.\n    \n    Exit Status:\n    Returns the status of the last command executed.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut fg_percent_doc: [*mut libc::c_char; 2] = [
    b"Resume job in foreground.\n    \n    Equivalent to the JOB_SPEC argument to the `fg' command.  Resume a\n    stopped or background job.  JOB_SPEC can specify either a job name\n    or a job number.  Following JOB_SPEC with a `&' places the job in\n    the background, as if the job specification had been supplied as an\n    argument to `bg'.\n    \n    Exit Status:\n    Returns the status of the resumed job.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut arith_doc: [*mut libc::c_char; 2] = [
    b"Evaluate arithmetic expression.\n    \n    The EXPRESSION is evaluated according to the rules for arithmetic\n    evaluation.  Equivalent to `let \"EXPRESSION\"'.\n    \n    Exit Status:\n    Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut conditional_doc: [*mut libc::c_char; 2] = [
    b"Execute conditional command.\n    \n    Returns a status of 0 or 1 depending on the evaluation of the conditional\n    expression EXPRESSION.  Expressions are composed of the same primaries used\n    by the `test' builtin, and may be combined using the following operators:\n    \n      ( EXPRESSION )\tReturns the value of EXPRESSION\n      ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n      EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n      EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n    \n    When the `==' and `!=' operators are used, the string to the right of\n    the operator is used as a pattern and pattern matching is performed.\n    When the `=~' operator is used, the string to the right of the operator\n    is matched as a regular expression.\n    \n    The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n    determine the expression's value.\n    \n    Exit Status:\n    0 or 1 depending on value of EXPRESSION.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut variable_help_doc: [*mut libc::c_char; 2] = [
    b"Common shell variable names and usage.\n    \n    BASH_VERSION\tVersion information for this Bash.\n    CDPATH\tA colon-separated list of directories to search\n    \t\tfor directories given as arguments to `cd'.\n    GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n    \t\tbe ignored by pathname expansion.\n    HISTFILE\tThe name of the file where your command history is stored.\n    HISTFILESIZE\tThe maximum number of lines this file can contain.\n    HISTSIZE\tThe maximum number of history lines that a running\n    \t\tshell can access.\n    HOME\tThe complete pathname to your login directory.\n    HOSTNAME\tThe name of the current host.\n    HOSTTYPE\tThe type of CPU this version of Bash is running under.\n    IGNOREEOF\tControls the action of the shell on receipt of an EOF\n    \t\tcharacter as the sole input.  If set, then the value\n    \t\tof it is the number of EOF characters that can be seen\n    \t\tin a row on an empty line before the shell will exit\n    \t\t(default 10).  When unset, EOF signifies the end of input.\n    MACHTYPE\tA string describing the current system Bash is running on.\n    MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n    MAILPATH\tA colon-separated list of filenames which Bash checks\n    \t\tfor new mail.\n    OSTYPE\tThe version of Unix this version of Bash is running on.\n    PATH\tA colon-separated list of directories to search when\n    \t\tlooking for commands.\n    PROMPT_COMMAND\tA command to be executed before the printing of each\n    \t\tprimary prompt.\n    PS1\t\tThe primary prompt string.\n    PS2\t\tThe secondary prompt string.\n    PWD\t\tThe full pathname of the current directory.\n    SHELLOPTS\tA colon-separated list of enabled shell options.\n    TERM\tThe name of the current terminal type.\n    TIMEFORMAT\tThe output format for timing statistics displayed by the\n    \t\t`time' reserved word.\n    auto_resume\tNon-null means a command word appearing on a line by\n    \t\titself is first looked for in the list of currently\n    \t\tstopped jobs.  If found there, that job is foregrounded.\n    \t\tA value of `exact' means that the command word must\n    \t\texactly match a command in the list of stopped jobs.  A\n    \t\tvalue of `substring' means that the command word must\n    \t\tmatch a substring of the job.  Any other value means that\n    \t\tthe command must be a prefix of a stopped job.\n    histchars\tCharacters controlling history expansion and quick\n    \t\tsubstitution.  The first character is the history\n    \t\tsubstitution character, usually `!'.  The second is\n    \t\tthe `quick substitution' character, usually `^'.  The\n    \t\tthird is the `history comment' character, usually `#'.\n    HISTIGNORE\tA colon-separated list of patterns used to decide which\n    \t\tcommands should be saved on the history list.\n\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut pushd_doc: [*mut libc::c_char; 2] = [
    b"Add directories to stack.\n    \n    Adds a directory to the top of the directory stack, or rotates\n    the stack, making the new top of the stack the current working\n    directory.  With no arguments, exchanges the top two directories.\n    \n    Options:\n      -n\tSuppresses the normal change of directory when adding\n    \t\tdirectories to the stack, so only the stack is manipulated.\n    \n    Arguments:\n      +N\tRotates the stack so that the Nth directory (counting\n    \t\tfrom the left of the list shown by `dirs', starting with\n    \t\tzero) is at the top.\n    \n      -N\tRotates the stack so that the Nth directory (counting\n    \t\tfrom the right of the list shown by `dirs', starting with\n    \t\tzero) is at the top.\n    \n      dir\tAdds DIR to the directory stack at the top, making it the\n    \t\tnew current working directory.\n    \n    The `dirs' builtin displays the directory stack.\n    \n    Exit Status:\n    Returns success unless an invalid argument is supplied or the directory\n    change fails.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut popd_doc: [*mut libc::c_char; 2] = [
    b"Remove directories from stack.\n    \n    Removes entries from the directory stack.  With no arguments, removes\n    the top directory from the stack, and changes to the new top directory.\n    \n    Options:\n      -n\tSuppresses the normal change of directory when removing\n    \t\tdirectories from the stack, so only the stack is manipulated.\n    \n    Arguments:\n      +N\tRemoves the Nth entry counting from the left of the list\n    \t\tshown by `dirs', starting with zero.  For example: `popd +0'\n    \t\tremoves the first directory, `popd +1' the second.\n    \n      -N\tRemoves the Nth entry counting from the right of the list\n    \t\tshown by `dirs', starting with zero.  For example: `popd -0'\n    \t\tremoves the last directory, `popd -1' the next to last.\n    \n    The `dirs' builtin displays the directory stack.\n    \n    Exit Status:\n    Returns success unless an invalid argument is supplied or the directory\n    change fails.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut dirs_doc: [*mut libc::c_char; 2] = [
    b"Display directory stack.\n    \n    Display the list of currently remembered directories.  Directories\n    find their way onto the list with the `pushd' command; you can get\n    back up through the list with the `popd' command.\n    \n    Options:\n      -c\tclear the directory stack by deleting all of the elements\n      -l\tdo not print tilde-prefixed versions of directories relative\n    \t\tto your home directory\n      -p\tprint the directory stack with one entry per line\n      -v\tprint the directory stack with one entry per line prefixed\n    \t\twith its position in the stack\n    \n    Arguments:\n      +N\tDisplays the Nth entry counting from the left of the list\n    \t\tshown by dirs when invoked without options, starting with\n    \t\tzero.\n    \n      -N\tDisplays the Nth entry counting from the right of the list\n    \t\tshown by dirs when invoked without options, starting with\n    \t\tzero.\n    \n    Exit Status:\n    Returns success unless an invalid option is supplied or an error occurs.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut shopt_doc: [*mut libc::c_char; 2] = [
    b"Set and unset shell options.\n    \n    Change the setting of each shell option OPTNAME.  Without any option\n    arguments, list each supplied OPTNAME, or all shell options if no\n    OPTNAMEs are given, with an indication of whether or not each is set.\n    \n    Options:\n      -o\trestrict OPTNAMEs to those defined for use with `set -o'\n      -p\tprint each shell option with an indication of its status\n      -q\tsuppress output\n      -s\tenable (set) each OPTNAME\n      -u\tdisable (unset) each OPTNAME\n    \n    Exit Status:\n    Returns success if OPTNAME is enabled; fails if an invalid option is\n    given or OPTNAME is disabled.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut printf_doc: [*mut libc::c_char; 2] = [
    b"Formats and prints ARGUMENTS under control of the FORMAT.\n    \n    Options:\n      -v var\tassign the output to shell variable VAR rather than\n    \t\tdisplay it on the standard output\n    \n    FORMAT is a character string which contains three types of objects: plain\n    characters, which are simply copied to standard output; character escape\n    sequences, which are converted and copied to the standard output; and\n    format specifications, each of which causes printing of the next successive\n    argument.\n    \n    In addition to the standard format specifications described in printf(1),\n    printf interprets:\n    \n      %b\texpand backslash escape sequences in the corresponding argument\n      %q\tquote the argument in a way that can be reused as shell input\n      %(fmt)T\toutput the date-time string resulting from using FMT as a format\n    \t        string for strftime(3)\n    \n    The format is re-used as necessary to consume all of the arguments.  If\n    there are fewer arguments than the format requires,  extra format\n    specifications behave as if a zero value or null string, as appropriate,\n    had been supplied.\n    \n    Exit Status:\n    Returns success unless an invalid option is given or a write or assignment\n    error occurs.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut complete_doc: [*mut libc::c_char; 2] = [
    b"Specify how arguments are to be completed by Readline.\n    \n    For each NAME, specify how arguments are to be completed.  If no options\n    are supplied, existing completion specifications are printed in a way that\n    allows them to be reused as input.\n    \n    Options:\n      -p\tprint existing completion specifications in a reusable format\n      -r\tremove a completion specification for each NAME, or, if no\n    \t\tNAMEs are supplied, all completion specifications\n      -D\tapply the completions and actions as the default for commands\n    \t\twithout any specific completion defined\n      -E\tapply the completions and actions to \"empty\" commands --\n    \t\tcompletion attempted on a blank line\n      -I\tapply the completions and actions to the initial (usually the\n    \t\tcommand) word\n    \n    When completion is attempted, the actions are applied in the order the\n    uppercase-letter options are listed above. If multiple options are supplied,\n    the -D option takes precedence over -E, and both take precedence over -I.\n    \n    Exit Status:\n    Returns success unless an invalid option is supplied or an error occurs.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut compgen_doc: [*mut libc::c_char; 2] = [
    b"Display possible completions depending on the options.\n    \n    Intended to be used from within a shell function generating possible\n    completions.  If the optional WORD argument is supplied, matches against\n    WORD are generated.\n    \n    Exit Status:\n    Returns success unless an invalid option is supplied or an error occurs.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut compopt_doc: [*mut libc::c_char; 2] = [
    b"Modify or display completion options.\n    \n    Modify the completion options for each NAME, or, if no NAMEs are supplied,\n    the completion currently being executed.  If no OPTIONs are given, print\n    the completion options for each NAME or the current completion specification.\n    \n    Options:\n    \t-o option\tSet completion option OPTION for each NAME\n    \t-D\t\tChange options for the \"default\" command completion\n    \t-E\t\tChange options for the \"empty\" command completion\n    \t-I\t\tChange options for completion on the initial word\n    \n    Using `+o' instead of `-o' turns off the specified option.\n    \n    Arguments:\n    \n    Each NAME refers to a command for which a completion specification must\n    have previously been defined using the `complete' builtin.  If no NAMEs\n    are supplied, compopt must be called by a function currently generating\n    completions, and the options for that currently-executing completion\n    generator are modified.\n    \n    Exit Status:\n    Returns success unless an invalid option is supplied or NAME does not\n    have a completion specification defined.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut mapfile_doc: [*mut libc::c_char; 2] = [
    b"Read lines from the standard input into an indexed array variable.\n    \n    Read lines from the standard input into the indexed array variable ARRAY, or\n    from file descriptor FD if the -u option is supplied.  The variable MAPFILE\n    is the default ARRAY.\n    \n    Options:\n      -d delim\tUse DELIM to terminate lines, instead of newline\n      -n count\tCopy at most COUNT lines.  If COUNT is 0, all lines are copied\n      -O origin\tBegin assigning to ARRAY at index ORIGIN.  The default index is 0\n      -s count\tDiscard the first COUNT lines read\n      -t\tRemove a trailing DELIM from each line read (default newline)\n      -u fd\tRead lines from file descriptor FD instead of the standard input\n      -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n      -c quantum\tSpecify the number of lines read between each call to\n    \t\t\tCALLBACK\n    \n    Arguments:\n      ARRAY\tArray variable name to use for file data\n    \n    If -C is supplied without -c, the default quantum is 5000.  When\n    CALLBACK is evaluated, it is supplied the index of the next array\n    element to be assigned and the line to be assigned to that element\n    as additional arguments.\n    \n    If not supplied with an explicit origin, mapfile will clear ARRAY before\n    assigning to it.\n    \n    Exit Status:\n    Returns success unless an invalid option is given or ARRAY is readonly or\n    not an indexed array.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
#[no_mangle]
pub static mut readarray_doc: [*mut libc::c_char; 2] = [
    b"Read lines from a file into an array variable.\n    \n    A synonym for `mapfile'.\0"
        as *const u8 as *const libc::c_char as *mut libc::c_char,
    0 as *const libc::c_void as *mut libc::c_void as *mut libc::c_char,
];
fn run_static_initializers() {
    unsafe {
        num_shell_builtins = (::std::mem::size_of::<[builtin; 77]>() as libc::c_ulong)
            .wrapping_div(::std::mem::size_of::<builtin>() as libc::c_ulong)
            .wrapping_sub(1 as libc::c_int as libc::c_ulong)
            as libc::c_int
    };
}
